/*
 * Copyright (c) 2017-2019 THL A29 Limited, a Tencent company. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef TENCENTCLOUD_CWP_V20180228_MODEL_MALWAREINFO_H_
#define TENCENTCLOUD_CWP_V20180228_MODEL_MALWAREINFO_H_

#include <string>
#include <vector>
#include <map>
#include <tencentcloud/core/utils/rapidjson/document.h>
#include <tencentcloud/core/utils/rapidjson/writer.h>
#include <tencentcloud/core/utils/rapidjson/stringbuffer.h>
#include <tencentcloud/core/AbstractModel.h>


namespace TencentCloud
{
    namespace Cwp
    {
        namespace V20180228
        {
            namespace Model
            {
                /**
                * 恶意文件详情
                */
                class MalwareInfo : public AbstractModel
                {
                public:
                    MalwareInfo();
                    ~MalwareInfo() = default;
                    void ToJsonObject(rapidjson::Value &value, rapidjson::Document::AllocatorType& allocator) const;
                    CoreInternalOutcome Deserialize(const rapidjson::Value &value);


                    /**
                     * 获取病毒名称
                     * @return VirusName 病毒名称
                     */
                    std::string GetVirusName() const;

                    /**
                     * 设置病毒名称
                     * @param VirusName 病毒名称
                     */
                    void SetVirusName(const std::string& _virusName);

                    /**
                     * 判断参数 VirusName 是否已赋值
                     * @return VirusName 是否已赋值
                     */
                    bool VirusNameHasBeenSet() const;

                    /**
                     * 获取文件大小
                     * @return FileSize 文件大小
                     */
                    int64_t GetFileSize() const;

                    /**
                     * 设置文件大小
                     * @param FileSize 文件大小
                     */
                    void SetFileSize(const int64_t& _fileSize);

                    /**
                     * 判断参数 FileSize 是否已赋值
                     * @return FileSize 是否已赋值
                     */
                    bool FileSizeHasBeenSet() const;

                    /**
                     * 获取文件MD5
                     * @return MD5 文件MD5
                     */
                    std::string GetMD5() const;

                    /**
                     * 设置文件MD5
                     * @param MD5 文件MD5
                     */
                    void SetMD5(const std::string& _mD5);

                    /**
                     * 判断参数 MD5 是否已赋值
                     * @return MD5 是否已赋值
                     */
                    bool MD5HasBeenSet() const;

                    /**
                     * 获取文件地址
                     * @return FilePath 文件地址
                     */
                    std::string GetFilePath() const;

                    /**
                     * 设置文件地址
                     * @param FilePath 文件地址
                     */
                    void SetFilePath(const std::string& _filePath);

                    /**
                     * 判断参数 FilePath 是否已赋值
                     * @return FilePath 是否已赋值
                     */
                    bool FilePathHasBeenSet() const;

                    /**
                     * 获取首次运行时间
                     * @return FileCreateTime 首次运行时间
                     */
                    std::string GetFileCreateTime() const;

                    /**
                     * 设置首次运行时间
                     * @param FileCreateTime 首次运行时间
                     */
                    void SetFileCreateTime(const std::string& _fileCreateTime);

                    /**
                     * 判断参数 FileCreateTime 是否已赋值
                     * @return FileCreateTime 是否已赋值
                     */
                    bool FileCreateTimeHasBeenSet() const;

                    /**
                     * 获取最近一次运行时间
                     * @return FileModifierTime 最近一次运行时间
                     */
                    std::string GetFileModifierTime() const;

                    /**
                     * 设置最近一次运行时间
                     * @param FileModifierTime 最近一次运行时间
                     */
                    void SetFileModifierTime(const std::string& _fileModifierTime);

                    /**
                     * 判断参数 FileModifierTime 是否已赋值
                     * @return FileModifierTime 是否已赋值
                     */
                    bool FileModifierTimeHasBeenSet() const;

                    /**
                     * 获取危害描述
                     * @return HarmDescribe 危害描述
                     */
                    std::string GetHarmDescribe() const;

                    /**
                     * 设置危害描述
                     * @param HarmDescribe 危害描述
                     */
                    void SetHarmDescribe(const std::string& _harmDescribe);

                    /**
                     * 判断参数 HarmDescribe 是否已赋值
                     * @return HarmDescribe 是否已赋值
                     */
                    bool HarmDescribeHasBeenSet() const;

                    /**
                     * 获取建议方案
                     * @return SuggestScheme 建议方案
                     */
                    std::string GetSuggestScheme() const;

                    /**
                     * 设置建议方案
                     * @param SuggestScheme 建议方案
                     */
                    void SetSuggestScheme(const std::string& _suggestScheme);

                    /**
                     * 判断参数 SuggestScheme 是否已赋值
                     * @return SuggestScheme 是否已赋值
                     */
                    bool SuggestSchemeHasBeenSet() const;

                    /**
                     * 获取服务器名称
                     * @return ServersName 服务器名称
                     */
                    std::string GetServersName() const;

                    /**
                     * 设置服务器名称
                     * @param ServersName 服务器名称
                     */
                    void SetServersName(const std::string& _serversName);

                    /**
                     * 判断参数 ServersName 是否已赋值
                     * @return ServersName 是否已赋值
                     */
                    bool ServersNameHasBeenSet() const;

                    /**
                     * 获取服务器IP
                     * @return HostIp 服务器IP
                     */
                    std::string GetHostIp() const;

                    /**
                     * 设置服务器IP
                     * @param HostIp 服务器IP
                     */
                    void SetHostIp(const std::string& _hostIp);

                    /**
                     * 判断参数 HostIp 是否已赋值
                     * @return HostIp 是否已赋值
                     */
                    bool HostIpHasBeenSet() const;

                    /**
                     * 获取进程名称
                     * @return ProcessName 进程名称
                     */
                    std::string GetProcessName() const;

                    /**
                     * 设置进程名称
                     * @param ProcessName 进程名称
                     */
                    void SetProcessName(const std::string& _processName);

                    /**
                     * 判断参数 ProcessName 是否已赋值
                     * @return ProcessName 是否已赋值
                     */
                    bool ProcessNameHasBeenSet() const;

                    /**
                     * 获取进程ID
                     * @return ProcessID 进程ID
                     */
                    std::string GetProcessID() const;

                    /**
                     * 设置进程ID
                     * @param ProcessID 进程ID
                     */
                    void SetProcessID(const std::string& _processID);

                    /**
                     * 判断参数 ProcessID 是否已赋值
                     * @return ProcessID 是否已赋值
                     */
                    bool ProcessIDHasBeenSet() const;

                    /**
                     * 获取标签特性
                     * @return Tags 标签特性
                     */
                    std::vector<std::string> GetTags() const;

                    /**
                     * 设置标签特性
                     * @param Tags 标签特性
                     */
                    void SetTags(const std::vector<std::string>& _tags);

                    /**
                     * 判断参数 Tags 是否已赋值
                     * @return Tags 是否已赋值
                     */
                    bool TagsHasBeenSet() const;

                    /**
                     * 获取影响广度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     * @return Breadth 影响广度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     */
                    std::string GetBreadth() const;

                    /**
                     * 设置影响广度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     * @param Breadth 影响广度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     */
                    void SetBreadth(const std::string& _breadth);

                    /**
                     * 判断参数 Breadth 是否已赋值
                     * @return Breadth 是否已赋值
                     */
                    bool BreadthHasBeenSet() const;

                    /**
                     * 获取查询热度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     * @return Heat 查询热度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     */
                    std::string GetHeat() const;

                    /**
                     * 设置查询热度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     * @param Heat 查询热度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     */
                    void SetHeat(const std::string& _heat);

                    /**
                     * 判断参数 Heat 是否已赋值
                     * @return Heat 是否已赋值
                     */
                    bool HeatHasBeenSet() const;

                    /**
                     * 获取唯一ID
                     * @return Id 唯一ID
                     */
                    uint64_t GetId() const;

                    /**
                     * 设置唯一ID
                     * @param Id 唯一ID
                     */
                    void SetId(const uint64_t& _id);

                    /**
                     * 判断参数 Id 是否已赋值
                     * @return Id 是否已赋值
                     */
                    bool IdHasBeenSet() const;

                    /**
                     * 获取文件名称
                     * @return FileName 文件名称
                     */
                    std::string GetFileName() const;

                    /**
                     * 设置文件名称
                     * @param FileName 文件名称
                     */
                    void SetFileName(const std::string& _fileName);

                    /**
                     * 判断参数 FileName 是否已赋值
                     * @return FileName 是否已赋值
                     */
                    bool FileNameHasBeenSet() const;

                    /**
                     * 获取首次发现时间
                     * @return CreateTime 首次发现时间
                     */
                    std::string GetCreateTime() const;

                    /**
                     * 设置首次发现时间
                     * @param CreateTime 首次发现时间
                     */
                    void SetCreateTime(const std::string& _createTime);

                    /**
                     * 判断参数 CreateTime 是否已赋值
                     * @return CreateTime 是否已赋值
                     */
                    bool CreateTimeHasBeenSet() const;

                    /**
                     * 获取最近扫描时间
                     * @return LatestScanTime 最近扫描时间
                     */
                    std::string GetLatestScanTime() const;

                    /**
                     * 设置最近扫描时间
                     * @param LatestScanTime 最近扫描时间
                     */
                    void SetLatestScanTime(const std::string& _latestScanTime);

                    /**
                     * 判断参数 LatestScanTime 是否已赋值
                     * @return LatestScanTime 是否已赋值
                     */
                    bool LatestScanTimeHasBeenSet() const;

                private:

                    /**
                     * 病毒名称
                     */
                    std::string m_virusName;
                    bool m_virusNameHasBeenSet;

                    /**
                     * 文件大小
                     */
                    int64_t m_fileSize;
                    bool m_fileSizeHasBeenSet;

                    /**
                     * 文件MD5
                     */
                    std::string m_mD5;
                    bool m_mD5HasBeenSet;

                    /**
                     * 文件地址
                     */
                    std::string m_filePath;
                    bool m_filePathHasBeenSet;

                    /**
                     * 首次运行时间
                     */
                    std::string m_fileCreateTime;
                    bool m_fileCreateTimeHasBeenSet;

                    /**
                     * 最近一次运行时间
                     */
                    std::string m_fileModifierTime;
                    bool m_fileModifierTimeHasBeenSet;

                    /**
                     * 危害描述
                     */
                    std::string m_harmDescribe;
                    bool m_harmDescribeHasBeenSet;

                    /**
                     * 建议方案
                     */
                    std::string m_suggestScheme;
                    bool m_suggestSchemeHasBeenSet;

                    /**
                     * 服务器名称
                     */
                    std::string m_serversName;
                    bool m_serversNameHasBeenSet;

                    /**
                     * 服务器IP
                     */
                    std::string m_hostIp;
                    bool m_hostIpHasBeenSet;

                    /**
                     * 进程名称
                     */
                    std::string m_processName;
                    bool m_processNameHasBeenSet;

                    /**
                     * 进程ID
                     */
                    std::string m_processID;
                    bool m_processIDHasBeenSet;

                    /**
                     * 标签特性
                     */
                    std::vector<std::string> m_tags;
                    bool m_tagsHasBeenSet;

                    /**
                     * 影响广度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     */
                    std::string m_breadth;
                    bool m_breadthHasBeenSet;

                    /**
                     * 查询热度 // 暂时不提供
注意：此字段可能返回 null，表示取不到有效值。
                     */
                    std::string m_heat;
                    bool m_heatHasBeenSet;

                    /**
                     * 唯一ID
                     */
                    uint64_t m_id;
                    bool m_idHasBeenSet;

                    /**
                     * 文件名称
                     */
                    std::string m_fileName;
                    bool m_fileNameHasBeenSet;

                    /**
                     * 首次发现时间
                     */
                    std::string m_createTime;
                    bool m_createTimeHasBeenSet;

                    /**
                     * 最近扫描时间
                     */
                    std::string m_latestScanTime;
                    bool m_latestScanTimeHasBeenSet;

                };
            }
        }
    }
}

#endif // !TENCENTCLOUD_CWP_V20180228_MODEL_MALWAREINFO_H_
